<?php
/*
 * @Author: CYH
 * @Date: 2020-10-31 10:25:06
 * @LastEditTime: 2021-05-12 11:28:39
 * @LastEditors: Please set LastEditors
 * @Description: 调宿管理model类
 * @FilePath: \dorm_manage_DEV\application\models\Register\Retreat.php
 */

    //调宿管理model类
    class Retreat extends CI_Model
    {
        //构造方法
        public function __construct()
        {

            parent::__construct();
            $this->load->database();
        }

        /**
         * @description: 退宿人员查询方法
         * @param {name, jobNumber}
         * @return {*}
         */        
        public function retreat_select($name, $jobNumber)
        {

            if ($name == '' && $jobNumber == '') 
            {
                $return = array('res' => '40002', 'msg' => '请输入必填字段' ,'data' => '');
                $result = json_encode($return);
            } 
            else 
            {
                $sj1 = $name == '' ? ' 1 = 1 ' : " name LIKE '%".$name."%'";
                $sj2 = $jobNumber = '' ? ' AND 1 = 1'  : " AND jobNumber LIKE '%".$jobNumber."%'";
                // $sj3 = "AND quitCheck = 'X' ";
                $sql = "SELECT B.area_name, B.floor_name, A.name, A.idNumber, A.jobNumber, A.sex, A.department1, A.department2, A.department3, A.job, A.area_number, A.floor_number, A.dorm_floor, A.room_number, A.bedNumber, A.liveDate 
                        FROM dorm_livepeople AS A LEFT JOIN dorm_sslmanage AS B ON A.area_number = B.area_number AND A.floor_number = B.floor_number WHERE" .$sj1 .$sj2;
                $query = $this->db->query($sql,$sj1,$sj2);
                // $RY_quit_check = 1;
                // $where = array('RY_name' => $RY_name ,'RY_quit_check' => $RY_quit_check);
                // $where = array('RY_name' => $RY_name);
                // $select = array('RY_idcardnum', 'RY_degsonid', 'RY_sex', 'RY_department', 'RY_job', 'AR_number' ,'SSL_number' ,'RY_number', 'RY_bed', 'RY_live_date' ,);
                // $this->db->select($select);
                // $this->db->where($where);
                // $query = $this->db->get('dorm_livepeople');
                if ($query->num_rows() > 0) 
                {
                    $return_su = array('res' => '40000', 'msg' => '查询成功', 'data' => $query->result());
                    $result = json_encode($return_su);
                } 
                else 
                {
                    $return_fa = array('res' => '40001', 'msg' => '查询无数据' ,'data' => '');
                    $result = json_encode($return_fa);
                }
            }
            return $result;
        }

        /**
         * @description: 退宿领用物品查询
         * @param {jobNumber}
         * @return {*}
         */        
        public function use_effects_select($jobNumber)
        {
            if ($jobNumber == '') 
            {
                $return = array('res' => '40002', 'msg' => '请输入必填字段' ,'data' => '');
                $result = json_encode($return);
            } 
            else 
            {
                $select = array('article_description' ,'article_number');
                $this->db->select($select);
                $this->db->where('jobNumber' ,$jobNumber);
                $query = $this->db->get('dorm_article');
                if ($query->num_rows() > 0) 
                {
                    $return_su = array('res' => '40000', 'msg' => '查询成功', 'data' => $query->result());
                    $result = json_encode($return_su);
                } 
                else 
                {
                    $return_fa = array('res' => '40001', 'msg' => '查询无数据' ,'data' => '');
                    $result = json_encode($return_fa);
                }
            }
            return $result;
        }

        /**
         * @description: 日期校验取值 type:0:退宿1:调宿
         * @param {number, type}
         * @return {*}
         */        
        public function checkDate($number,$type)
        {
            if($number>1 && $type == 0)
            {
                $sj = "name LIKE '%".$name."%' AND jobNumber LIKE '%".$jobNumber."%' ORDER BY room_livedate DESC LIMIT 1";
                $sql = "SELECT * FROM dorm_manday_calc WHERE " .$sj_dorm_manday_calc_se;
                $query = $this->db->query($sql, $sj);
            }
            elseif($number==1 &&  $type == 0)
            {
                $sj = "name LIKE '%".$name."%' AND jobNumber LIKE '%".$jobNumber."%'";
                $sql = "SELECT * FROM dorm_manday_calc WHERE " .$sj_dorm_manday_calc_se;
                $query = $this->db->query($sql, $sj);
            }
            else
            {
                $sj = "name LIKE '%".$name."%' AND jobNumber LIKE '%".$jobNumber."%'";
                $sql = "SELECT * FROM dorm_livepeople WHERE " .$sj_dorm_manday_calc_se;
                $query = $this->db->query($sql, $sj);
            }
            return $query->result();
        }

        /**
         * @description: 查看人员退宿记录
         * @param {*}
         * @return {*}
         */
        public function retreat_record()
        {
            $query = $this->db->query("SELECT * FROM dorm_stay_retreat_tune WHERE jobNumber LIKE '%".$jobNumber."%' AND retreatType IS NOT NULL");
            if($query->num_rows()>0)
            {
                return $query->result();
            }
        }

        // /*退宿进行步骤
        // 1.记录表数据插入
        // 2.人员信息表更新
        // 3.房间表的宿舍实际人数和宿舍剩余可住人数更新
        // 4.床位表更新
        // 5.水电人天表更新
        // 6.水电费计算
        // */

        // /**
        //  * @description: 退宿方法 离职类型:1离职，2自理，3外宿
        //  * @param {name,jobNumber,check_inAddress,retreatDate,retreatType,remarks,room_hotwater,room_coldwater,room_electric}
        //  * @return {*}
        //  */        
        // public function retreat($name ,$jobNumber ,$check_inAddress ,$retreatDate ,$retreatType, $remarks, $room_hotwater, $room_coldwater, $room_electric)
        // {
            
        //     if ($name == '' || $jobNumber == '' || $retreatDate == '' || $room_hotwater || $room_coldwater || $room_electric) 
        //     {
        //         $return = array('res' => '40002', 'msg' => '请输入必填字段' ,'data' => '');
        //         $result = json_encode($return);
        //     } 
        //     else 
        //     {
        //         //取水电表数据
        //         $query_dorm_manday_calc_se = $this->db->get_where('dorm_manday_calc' ,array('name' => $name ,'jobNumber' => $jobNumber));

        //         //调宿日期正确性校验
        //         /*1.若数据大于一条则取调宿日期最近的日期进行判断，若调宿日期-上一次调宿日期<0则报错
        //           2.若只有一条数据则取房间入住日期进行判断，若调宿日期-房间入住日期<0报错
        //           3.若一条数据都没有，则取人员信息的入住日期进行判断，若调宿日期-入住日期<0报错
        //         */

        //         //若数据大于一条则取调宿日期最近的日期进行判断，若退宿日期-上一次调宿日期<0则报错
        //         if($query_dorm_manday_calc_se->num_rows()>1)
        //         {
        //             $sj_dorm_manday_calc_se = "name LIKE '%".$name."%' AND jobNumber LIKE '%".$jobNumber."%' ORDER BY room_livedate DESC LIMIT 1";
        //             $sql_dorm_manday_calc_se = "SELECT * FROM dorm_manday_calc WHERE " .$sj_dorm_manday_calc_se;
        //             $query_dorm_manday_calc_se1 = $this->db->query($sql_dorm_manday_calc_se ,$sj_dorm_manday_calc_se);
        //             // $start_Coordinating_date = new DateTime($query_dorm_manday_calc_se1->row()->CoordinatingDate);
        //             // $end_Coordinating_date = new DateTime($retreatDate);
        //             $start_Coordinating_date = strtotime($query_dorm_manday_calc_se1->row()->CoordinatingDate);
        //             $end_Coordinating_date = strtotime($retreatDate);

        //         //若只有一条数据则取房间入住日期进行判断，若退宿日期-房间入住日期<0报错
        //         }
        //         elseif($query_dorm_manday_calc_se->num_rows()==1)
        //         {
        //             //若只有一条数据则取房间入住日期进行判断，若退宿日期-房间入住日期<0报错
        //             $sj_dorm_manday_calc_se = "name LIKE '%".$name."%' AND jobNumber LIKE '%".$jobNumber."%'";
        //             $sql_dorm_manday_calc_se = "SELECT * FROM dorm_manday_calc WHERE " .$sj_dorm_manday_calc_se;
        //             $query_dorm_manday_calc_se1 = $this->db->query($sql_dorm_manday_calc_se ,$sj_dorm_manday_calc_se);
        //             // $start_Coordinating_date = new DateTime($query_dorm_manday_calc_se1->row()->room_livedate);
        //             // $end_Coordinating_date = new DateTime($retreatDate);
        //             $start_Coordinating_date = strtotime($query_dorm_manday_calc_se1->row()->room_livedate);
        //             $end_Coordinating_date = strtotime($retreatDate);

        //         //若一条数据都没有，则取人员信息的入住日期进行判断，若退宿日期-入住日期<0报错  
        //         }
        //         else
        //         {
        //             $sj_dorm_manday_calc_se = "name LIKE '%".$name."%' AND jobNumber LIKE '%".$jobNumber."%'";
        //             $sql_dorm_manday_calc_se = "SELECT * FROM dorm_livepeople WHERE " .$sj_dorm_manday_calc_se;
        //             $query_dorm_manday_calc_se1 = $this->db->query($sql_dorm_manday_calc_se ,$sj_dorm_manday_calc_se);
        //             // $start_Coordinating_date = new DateTime($query_dorm_manday_calc_se1->row()->liveDate);
        //             // $end_Coordinating_date = new DateTime($retreatDate);
        //             $start_Coordinating_date = strtotime($query_dorm_manday_calc_se1->row()->liveDate);
        //             $end_Coordinating_date = strtotime($retreatDate);
        //         }

        //         //日期差值计算 
        //         // $days = $start_Coordinating_date->diff($end_Coordinating_date)->days;
        //         $days = ($end_Coordinating_date - $start_Coordinating_date) / 86400;


        //         //调宿日期有误进行报错
        //         if($days<=0)
        //         {
        //             $return = array('res' => '40001', 'msg' => '请检查退宿日期', 'data' => '');
        //             $result = json_encode($return);
        //         } 
        //         else 
        //         {                 
        //             //在退宿记录表中查找是否有这这个人员的退宿记录，如果有则报错
        //             // $sql = "SELECT * FROM dorm_stay_retreat_tune WHERE jobNumber LIKE '%".$jobNumber."%' AND retreatType IS NOT NULL";
        //             // $query = $this->db->query($sql);
        //             $query = $this->db->query("SELECT * FROM dorm_stay_retreat_tune WHERE jobNumber LIKE '%".$jobNumber."%' AND retreatType IS NOT NULL");
        //             if($query->num_rows()>0)
        //             {
        //                 $return = array('res' => '40001', 'msg' => '不允许重复离职', 'data' => '');
        //                 $result = json_encode($return);
        //             } 
        //             else 
        //             {
        //             /*记录表数据插入*/

        //                 //取入住人员信息表中的此人的数据
        //                 $query = $this->db->get_where('dorm_livepeople', array('name' => $name, 'jobNumber' => $jobNumber));

        //                 //对象数组转数组
        //                 $query_array = (array)$query->result()[0];

        //                 //取当前日期
        //                 $date_now = date('Y-m-d');

        //                 //0:退宿 1:入住
        //                 $SQ_type = 0;

        //                 //取入住/退宿记录表中此人员的全部信息
        //                 $query_dorm_stay_retreat_tune = $this->db->get_where('dorm_stay_retreat_tune' ,array('name' => $name, 'jobNumber' => $jobNumber, 'type' => 0 ));
                        
        //                 //给要插入到入住/退宿信息表中的数据赋值
        //                 $data_dorm_stay_retreat_tune = array(
        //                     'area_number' => $query_array['area_number'],           //区域编号
        //                     'floor_number' => $query_array['floor_number'],         //宿舍楼编号
        //                     'dorm_floor' => $query_array['dorm_floor'],             //宿舍楼层号
        //                     'room_number' => $query_array['room_number'],           //宿舍房间号
        //                     'idNumber' => $query_array['idNumber'],                 //身份证号
        //                     'jobNumber' => $query_array['jobNumber'],               //工号
        //                     'name' => $query_array['name'],                         //人员姓名
        //                     'department' => $query_array['department'],             //部门
        //                     'job' => $query_array['job'],                           //岗位
        //                     'sex' => $query_array['sex'],                           //性别
        //                     'phone' => $query_array['phone'],                       //联系方式
        //                     'location' => $query_array['location'],                 //籍贯
        //                     'address' => $query_array['address'],                   //户籍地址
        //                     'type' => 0,                                            //类别
        //                     'retreatType' => $retreatType,                          //退宿类型
        //                     'apply_date' => $date_now,                              //申请日期
        //                     'bedNumber' => $query_array['bedNumber'],               //床位号
        //                     'wardrobe' => $query_array['wardrobe'],                 //柜子号
        //                     // 'liveDate' => $query_array['liveDate'],              //入住日期
        //                     'liveDate' => $retreatDate,                             //入住日期(新房间入住日期)
        //                     'retreatDate' => $retreatDate,                          //退宿日期
        //                     'emergencyContact' => $query_array['emergencyContact'], //紧急联系人
        //                     'relationShip' => $query_array['relationShip'],         //与紧急联系人关系
        //                     'emergencyPhone' => $query_array['emergencyPhone'],     //紧急联系人联系方式
        //                     'remarks' => $remarks,                                  //备注
        //                     'applyName' => $name                                    //申请人
        //                 );

        //                 //如果记录表中无此人离职记录则将此条数据插入
        //                 if($query_dorm_stay_retreat_tune->num_rows() == 0)
        //                 {
        //                     $this->db->insert('dorm_stay_retreat_tune', $data_dorm_stay_retreat_tune);
        //                     $result_dorm_stay_retreat_tune = $this->db->affected_rows();
        //                 }

        //             /*人员信息表更新*/

        //                 //入住人员信息表更新数据
        //                 $data_dorm_livepeople = array(
        //                     'quitCheck' => 'X',                         //将是否已退宿标记为X
        //                     'retreatType' => $retreatType,              //退宿类型
        //                     'retreatDate' => $retreatDate,              //退宿日期
        //                     'remarks' => $remarks,                      //备注
        //                     'check_inAddress' => $check_inAddress,      //入住位置
        //                     'liveCheck' => ''                           //将是否已入住标记为空
        //                     );
        //                 $where = array('name' => $name, 'jobNumber' => $jobNumber);
        //                 $this->db->where($where);
        //                 $this->db->update('dorm_livepeople', $data_dorm_livepeople);
        //                 $result_dorm_livepeople = $this->db->affected_rows();

        //             /*房间表的宿舍实际人数和宿舍剩余可住人数更新*/

        //                 //取入住人员信息表中此人员的所有数据
        //                 $query_livepeople = $this->db->get_where('dorm_livepeople', array('jobNumber' => $jobNumber));

        //                 //对象数组转数组
        //                 $num = (array)$query_livepeople->result()[0];

        //                 //将区域编号,宿舍楼编号,房间号作为条件取房间信息表中的宿舍实际人数
        //                 $query_roominfor = $this->db->get_where('dorm_roominfor', array('area_number' => $num['area_number'], 'floor_number' => $num['floor_number'], 'room_number' => $num['room_number']));

        //                 //对象数组转数组
        //                 $peopleNumber = (array)$query_roominfor->result()[0];

        //                 //将原宿舍实际人数-1
        //                 $peopleNumber_add = $peopleNumber['peopleNumber'] - 1;

        //                 //将原宿舍剩余可住人数+1
        //                 $remainNumber_add = $peopleNumber['remainNumber']  + 1;
                        
        //                 //将原宿舍可住人数和宿舍实际人数进行更新
        //                 $where_peopleNumber = array(
        //                     'area_number' => $peopleNumber['area_number'],      //区域编号
        //                     'floor_number' => $peopleNumber['floor_number'],    //宿舍楼编号
        //                     'room_number' => $peopleNumber['room_number']       //宿舍房间号
        //                 );
        //                 $data_peopleNumber = array(
        //                     'peopleNumber' => $peopleNumber_add,                //宿舍实际人数
        //                     'remainNumber' => $remainNumber_add                 //宿舍剩余可住
        //                 );
        //                 $this->db->where($where_peopleNumber);
        //                 $this->db->update('dorm_roominfor', $data_peopleNumber);
        //                 $result_dorm_roominfor = $this->db->affected_rows();
                    
        //             /*床位表更新*/

        //                 //更新床位表退宿人员信息
        //                 $data_bed = array(
        //                     'idNumber' => '',       //身份证号
        //                     'name' => '',           //姓名
        //                     'sex' => '',            //性别
        //                     'jobNumber' => '',      //工号
        //                     'department' => '',     //部门
        //                     'phone' => '',          //联系方式
        //                     'check_inWhether' => 0, //是否住人
        //                     'remarks' => ''         //备注
        //                 );
        //                 $where_bed = array('name' => $name, 'jobNumber' => $jobNumber);
        //                 $this->db->where($where_bed);
        //                 $this->db->update('dorm_bed', $data_bed);
        //                 $result_bed = $this->db->affected_rows();

        //             /*水电人天表更新*/

        //                 //若存在免扣水电的情况需要减去免扣水电的天数
        //                 //取免扣水电表中的当月人员信息
        //                 $sql_leave_off = "SELECT * FROM dorm_leave_off WHERE name LIKE '%".$name."%' AND jobNumber LIKE '%".$jobNumber."%' ORDER BY apply_beginDate DESC LIMIT 1";
        //                 $query_leave_off = $this->db->query($sql_leave_off);

        //                 //若此人存在水电免扣的信息则进行下面的逻辑
        //                 if($query_leave_off->num_rows()>0)
        //                 {

        //                 //申请日期开始日期的年份
        //                 $year_beginDate = substr($query_leave_off->row()->apply_beginDate, 0, 4);

        //                 //申请日期开始日期的月份
        //                 $month_beginDate = substr($query_leave_off->row()->apply_beginDate, 5, 2);

        //                 //申请日期结束日期的年份
        //                 $year_endDate = substr($query_leave_off->row()->apply_endDate, 0, 4);

        //                 //申请日期结束日期的月份
        //                 $month_endDate = substr($query_leave_off->row()->apply_endDate, 5, 2);

        //                 }

        //             /*计算所住房间的居住天数
        //             1.若有多条取最近的一条房间入住日期的数据的房间入住日期与输入的退宿日期比较，若同年同月则入住天数 = 退宿日期 - 房间入住日期 ，若不同则入住天数 = 退宿日期 - 当年当月的第一天,若存在水电免扣则减去水电免扣的申请天数
        //             2.若只有一条数据取这条数据的房间入住日期与所输的退宿日期比较，若同年同月则入住天数 = 退宿日期 - 房间入住日期 ，若不同则退宿日期 - 当年当月的第一天,若存在水电免扣则减去水电免扣的申请天数
        //             3.若水电表一条数据都没有将人员的入住日期与所输的退宿日期比较，若同年同月则入住天数 = 退宿日期 - 入住日期 ，若不同则入住天数 = 退宿日期 - 当年当月的第一天，若存在水电免扣则减去水电免扣的申请天数
        //                 (1)先计算入住天数 
        //                 (2)减去免扣水电天数 
        //                 (3)插入数据到水电表更新入住天数 
        //                 (4)再插一条数据到水电表中更新调宿日期*/

        //             /*水电免扣逻辑
        //             1.如果申请日期开始日期年份月份等于当年当月,并且申请日期结束日期年份月份也等于当年当月 则入住天数 = 原入住天数 - 申请天数
        //             2.如果申请日期开始日期年份月份等于当年当月,申请日期结束日期年份月份也等于当年不等于当月 则入住天数 = 原入住天数 - (当月最后一天-申请日期开始日期)
        //             */

        //                 //取人天水电表条数
        //                 $query_manday = $this->db->get_where('dorm_manday_calc' ,array('name' => $name ,'jobNumber' => $jobNumber));

        //                 //若有多条取最近的一条房间入住日期的数据的房间入住日期与输入的调宿日期比较，若同年同月则入住天数 = 调宿日期 - 房间入住日期 ，若不同则入住天数 = 调宿日期 - 当年当月的第一天,若存在水电免扣则减去水电免扣的申请天数
        //                 if($query_manday->num_rows()>1)
        //                 {

        //                     //取最近的一条房间入住日期的数据的年份
        //                     $year = substr($query_dorm_manday_calc_se1->row()->room_livedate, 0, 4);

        //                     //取最近的一条房间入住日期的数据的月份
        //                     $month = substr($query_dorm_manday_calc_se1->row()->room_livedate, 5, 2);

        //                     ////若同年同月则入住天数 = 退宿日期 - 房间入住日期 
        //                     if($year == date("Y") && $month == date("m"))
        //                     {
        //                         // $start_Coordinating_date1 = new DateTime($query_dorm_manday_calc_se1->row()->room_livedate);
        //                         // $end_room_livedate = new DateTime($retreatDate);
        //                         // $live_days = $start_Coordinating_date1->diff($end_room_livedate)->days;
        //                         $start_Coordinating_date1 = strtotime($query_dorm_manday_calc_se1->row()->room_livedate);
        //                         $end_room_livedate = strtotime($retreatDate);
        //                         $live_days = ($end_room_livedate - $start_Coordinating_date1) / 86400;

        //                     //若不同则入住天数 = 退宿日期 - 退宿年退宿日期月的第一天
        //                     }
        //                     else
        //                     {
        //                         $retreatDate_year = substr($retreatDate, 0, 4);
        //                         $retreatDate_month = substr($retreatDate, 5, 2);
        //                         // $start_Coordinating_date1 = new DateTime(date("$retreatDate_year-$retreatDate_month-01"));
        //                         // $end_room_livedate = new DateTime($retreatDate);
        //                         // $live_days = $start_Coordinating_date1->diff($end_room_livedate)->days;
        //                         $start_Coordinating_date1 = strtotime(date("$retreatDate_year-$retreatDate_month-01"));
        //                         $end_room_livedate = strtotime($retreatDate);
        //                         $live_days = ($end_room_livedate - $start_Coordinating_date1) / 86400;
        //                     }

        //                     //减去免扣水电天数
        //                     if($query_leave_off->num_rows()>0)
        //                     {

        //                         //如果申请日期开始日期年份月份等于当年当月,并且申请日期结束日期年份月份也等于当年当月 则入住天数 = 原入住天数 - 申请天数
        //                         if( ( $year_beginDate == date("Y") && $month_beginDate = date("m") ) && ( $year_endDate == date("Y") && $month_endDate == date("m") ) )
        //                         {
        //                             $live_days = $live_days - $query_leave_off->row()->apply_days;

        //                         //如果申请日期开始日期年份月份不等于当年当月,申请日期结束日期年份月份也等于当年不等于当月 则入住天数 = 原入住天数 - (当月最后一天-申请日期开始日期)
        //                         // }elseif( ( $year_beginDate == date("Y") && $month_beginDate = date("m") ) && ( $year_endDate == date("Y") && $month_endDate != date("m") ) )
        //                         }
        //                         else
        //                         {
        //                             // $start_apply_beginDate = new DateTime($query_leave_off->row()->apply_beginDate);
        //                             // $end_month_last = date("Y-m-t");//当月最后一天
        //                             // $live_days = $live_days - $start_apply_beginDate->diff($end_month_last)->days;
        //                             $start_apply_beginDate = strtotime($query_leave_off->row()->apply_beginDate);
        //                             $end_month_last = strtotime(date("Y-m-t"));//当月最后一天
        //                             $live_days -= (($end_month_last - $start_apply_beginDate) / 86400 );
        //                         }
        //                     }

        //                     //将入住天数与退宿日期进行更新
        //                     $sql_live_days_up = "UPDATE dorm_manday_calc SET liveDays = '".$live_days."' , Check_outDate = '".$retreatDate."' WHERE name LIKE '%".$name."%' AND jobNumber LIKE '%".$jobNumber."%' AND CoordinatingDate IS NULL";
        //                     $query_live_days  = $this->db->query($sql_live_days_up);
        //                     $result_manday_calc_up = $this->db->affected_rows();
                        
        //                 //若只有一条数据取这条数据的房间入住日期与所输的退宿日期与较，若同年同月则入住天数 = 退宿日期 - 房间入住日期 ，若不同则退宿日期 - 当年当月的第一天,若存在水电免扣则减去水电免扣的申请天数
        //                 }
        //                 elseif($query_manday->num_rows()==1)
        //                 {

        //                     //取最近的一条房间入住日期的数据的年份
        //                     $year = substr($query_dorm_manday_calc_se1->row()->room_livedate, 0, 4);

        //                     //取最近的一条房间入住日期的数据的年份
        //                     $month = substr($query_dorm_manday_calc_se1->row()->room_livedate, 5, 2);

        //                     //若同年同月则入住天数 = 调宿日期 - 房间入住日期
        //                     if($year == date("Y") && $month == date("m"))
        //                     {
        //                         // $start_Coordinating_date1 = new DateTime($query_dorm_manday_calc_se1->row()->room_livedate);
        //                         // $end_room_livedate = new DateTime($retreatDate);
        //                         // $live_days = $start_Coordinating_date1->diff($end_room_livedate)->days;
        //                         $start_Coordinating_date1 = strtotime($query_dorm_manday_calc_se1->row()->room_livedate);
        //                         $end_room_livedate = strtotime($retreatDate);
        //                         $live_days = ($end_room_livedate - $start_Coordinating_date1) / 86400;

        //                         //若不同则入住天数 = 调宿日期 - 退宿年退宿日期月的第一天
        //                         }
        //                         else
        //                         {
        //                             $retreatDate_year = substr($retreatDate, 0, 4);
        //                             $retreatDate_month = substr($retreatDate, 5, 2);
        //                             // $start_Coordinating_date1 = new DateTime(date("$retreatDate_year-$retreatDate_month-01"));
        //                             // $end_room_livedate = new DateTime($retreatDate);
        //                             // $live_days = $start_Coordinating_date1->diff($end_room_livedate)->days;
        //                             $start_Coordinating_date1 = strtotime(date("$retreatDate_year-$retreatDate_month-01"));
        //                             $end_room_livedate = strtotime($retreatDate);
        //                             $live_days = ($end_room_livedate - $start_Coordinating_date1) / 86400;
        //                         }

        //                     //减去免扣水电天数
        //                     if($query_leave_off->num_rows()>0)
        //                     {

        //                         //如果申请日期开始日期年份月份等于当年当月,并且申请日期结束日期年份月份也等于当年当月 则入住天数 = 原入住天数 - 申请天数
        //                         if( ( $year_beginDate == date("Y") && $month_beginDate = date("m") ) && ( $year_endDate == date("Y") && $month_endDate == date("m") ) )
        //                         {
        //                             $live_days = $live_days - $query_leave_off->row()->apply_days;

        //                         //如果申请日期开始日期年份月份不等于当年当月,申请日期结束日期年份月份也等于当年不等于当月 则入住天数 = 原入住天数 - (当月最后一天-申请日期开始日期)
        //                         // }elseif( ( $year_beginDate == date("Y") && $month_beginDate = date("m") ) && ( $year_endDate == date("Y") && $month_endDate != date("m") ) ){
        //                         }
        //                         else
        //                         {
        //                             // $start_apply_beginDate = new DateTime($query_leave_off->row()->apply_beginDate);
        //                             // $end_month_last = date("Y-m-t");//当月最后一天
        //                             // $live_days = $live_days - $start_apply_beginDate->diff($end_month_last)->days;
        //                             $start_apply_beginDate = strtotime($query_leave_off->row()->apply_beginDate);
        //                             $end_month_last = strtotime(date("Y-m-t"));//当月最后一天
        //                             $live_days -= (($end_month_last - $start_apply_beginDate) / 86400);
        //                         }
        //                     }

        //                     //更新水电人天表
        //                     $data_manday = array(
        //                         'Check_outDate' => $retreatDate,    //退宿日期
        //                         'liveDays' => $live_days            //入住日期
        //                     );
        //                     $where_manday = array(
        //                         'name' => $name,                    //人员姓名
        //                         'jobNumber' => $jobNumber           //工号
        //                     );
        //                     $this->db->where($where_manday);
        //                     $this->db->update('dorm_manday_calc' ,$data_manday);
        //                     $result_manday_calc_up = $this->db->affected_rows();

        //                 //若水电表一条数据都没有将人员的入住日期与退宿日期比较，若同年同月则入住天数 = 退宿日期 - 入住日期 ，若不同则入住天数 = 退宿日期 - 当年当月的第一天，若存在水电免扣则减去水电免扣的申请天数
        //                 }
        //                 else
        //                 {

        //                     //取退宿人员的所有信息
        //                     $query_liveDate = $this->db->get_where('dorm_livepeople' ,array('name' => $name, 'jobNumber' => $jobNumber));

        //                     //取入住日期的年份
        //                     $year = substr($query_liveDate->row()->liveDate, 0, 4);

        //                     ///取入住日期的月份
        //                     $month = substr($query_liveDate->row()->liveDate, 5, 2);

        //                     //若同年同月则入住天数 = 退宿日期 - 入住日期
        //                     if($year == date("Y") && $month == date("m"))
        //                     {
        //                         // $start_Coordinating_date1 = new DateTime($query_liveDate->row()->liveDate);
        //                         // $end_room_livedate = new DateTime($retreatDate);
        //                         // $live_days = $start_Coordinating_date1->diff($end_room_livedate)->days;
        //                         $start_Coordinating_date1 = strtotime($query_liveDate->row()->liveDate);
        //                         $end_room_livedate = strtotime($retreatDate);
        //                         $live_days = ($end_room_livedate - $start_Coordinating_date1) / 86400;

        //                         //若不同则入住天数 = 退宿日期 - 当年退宿日期月的第一天
        //                         }
        //                         else
        //                         {
        //                             $retreatDate_year = substr($retreatDate, 0, 4);
        //                             $retreatDate_month = substr($retreatDate, 5, 2);
        //                             // $start_Coordinating_date1 = new DateTime(date("$retreatDate_year-$retreatDate_month-01"));
        //                             // $end_room_livedate = new DateTime($retreatDate);
        //                             // $live_days = $start_Coordinating_date1->diff($end_room_livedate)->days;
        //                             $start_Coordinating_date1 = strtotime(date("$retreatDate_year-$retreatDate_month-01"));
        //                             $end_room_livedate = strtotime($retreatDate);
        //                             $live_days = ($end_room_livedate - $start_Coordinating_date1) / 86400;
        //                         }

        //                     //减去免扣水电天数
        //                     if($query_leave_off->num_rows()>0)
        //                     {

        //                         //如果申请日期开始日期年份月份等于当年当月,并且申请日期结束日期年份月份也等于当年当月 则入住天数 = 原入住天数 - 申请天数
        //                         if( ( $year_beginDate == date("Y") && $month_beginDate = date("m") ) && ( $year_endDate == date("Y") && $month_endDate == date("m") ) )
        //                         {
        //                             $live_days = $live_days - $query_leave_off->row()->apply_days;

        //                         //如果申请日期开始日期年份月份等于当年当月,申请日期结束日期年份月份也等于当年不等于当月 则入住天数 = 原入住天数 - (当月最后一天-申请日期开始日期)
        //                         // }elseif( ( $year_beginDate == date("Y") && $month_beginDate = date("m") ) && ( $year_endDate == date("Y") && $month_endDate != date("m") ) ){
        //                         }
        //                         else
        //                         {
        //                             // $start_apply_beginDate = new DateTime($query_leave_off->row()->apply_beginDate);
        //                             // $end_month_last = date("Y-m-t");//当月最后一天
        //                             // $live_days = $live_days - $start_apply_beginDate->diff($end_month_last)->days;
        //                             $start_apply_beginDate = strtotime($query_leave_off->row()->apply_beginDate);
        //                             $end_month_last = strtotime(date("Y-m-t"));//当月最后一天
        //                             $live_days = ($end_month_last - $start_apply_beginDate) / 86400;
        //                         }
        //                     }
                        
        //                     //数据插入水电表
        //                     $data_manday_calc = array(
        //                         'area_number' => $query_array['area_number'],
        //                         'floor_number' => $query_array['floor_number'],
        //                         'room_number' => $query_array['room_number'],
        //                         'name' => $name,
        //                         'jobNumber' => $jobNumber,
        //                         'dorm_livedate' => $query_array['liveDate'],
        //                         'room_livedate' => $query_array['liveDate'],
        //                         'Check_outDate' => $retreatDate,
        //                         'CoordinatingDate' => '',
        //                         'liveDays' => $live_days
        //                     );
        //                     $this->db->insert('dorm_manday_calc' ,$data_manday_calc);
        //                     $result_manday_calc_up = $this->db->affected_rows();
        //                 }

        //             /*退宿人员水电费计算*/

        //                 $roomMeterArray = array(
        //                     $jobNumber,                                             //工号
        //                     $date = strtotime(date("Y-m-d")),                       //当前时间时间戳
        //                     $area_number = explode('*', $check_inAddress)[0],       //区域编号
        //                     $floor_number = explode('*', $check_inAddress)[1],      //宿舍楼编号
        //                     $room_number = explode('*', $check_inAddress)[2],       //宿舍房间号
        //                     $room_hotwater,                                         //房间热水表
        //                     $room_coldwater,                                        //房间冷水表
        //                     $room_electric                                          //房间电表
        //                 );

        //                 //调用方法计算水电费
        //                 $query_retreatCost = $this->cost->singleUtilitiesCalc($roomMeterArray);
        //                 $result_retreatCost = $this->db->affected_rows();

        //                 // print_r($result_dorm_stay_retreat_tune);
        //                 // print_r($result_dorm_livepeople);
        //                 // print_r($result_dorm_roominfor);
        //                 // print_r($result_bed);
        //                 // print_r($result_manday_calc_up);
        //                 // print_r($result_retreatCost);
        //                 // return;
        //                 //将退宿人员信息更新到人员人天信息表
        //                 if ($result_dorm_stay_retreat_tune && $result_dorm_livepeople && $result_dorm_roominfor && $result_bed && $result_manday_calc_up && $result_retreatCost)
        //                 {
        //                     $return_su = array('res' => '40000', 'msg' => '退宿成功', 'data' => $query_retreatCost->result());
        //                     $result = json_encode($return_su);
        //                 }
        //                 else
        //                 {
        //                     $return_fa = array('res' => '40001', 'msg' => '退宿失败', 'data' => '');
        //                     $result = json_encode($return_fa);
        //                 }
        //             }
        //         }      
        //     }
        //     return $result;
        // }

        /*退宿进行步骤
        1.记录表数据插入
        2.人员信息表更新
        3.房间表的宿舍实际人数和宿舍剩余可住人数更新
        4.床位表更新
        */

        /**
         * @description: 退宿方法 离职类型:1离职，2自理，3外宿
         * @param {name, jobNumber, check_inAddress, retreatDate, retreatType, remarks}
         * @return {*}
         */        
        public function retreat($name = FALSE, $idNumber = FALSE, $jobNumber = FALSE, $check_inAddress = FALSE, $retreatDate = FALSE, $retreatType = FALSE, $remarks = FALSE)
        {
            if ($name == '' || ( $jobNumber == '' && $idNumber == '') || $retreatDate == '') 
            {
                $return = array('res' => '40002', 'msg' => '请输入必填字段' ,'data' => '');
                $result = json_encode($return);
            } 
            else 
            {
                // //取水电表数据
                // $query_dorm_manday_calc_se = $this->db->get_where('dorm_manday_calc' ,array('name' => $name ,'jobNumber' => $jobNumber));

                // //调宿日期正确性校验
                // /*1.若数据大于一条则取调宿日期最近的日期进行判断，若调宿日期-上一次调宿日期<0则报错
                //   2.若只有一条数据则取房间入住日期进行判断，若调宿日期-房间入住日期<0报错
                //   3.若一条数据都没有，则取人员信息的入住日期进行判断，若调宿日期-入住日期<0报错
                // */

                // //若数据大于一条则取调宿日期最近的日期进行判断，若退宿日期-上一次调宿日期<0则报错
                // if($query_dorm_manday_calc_se->num_rows()>1)
                // {
                //     $sj_dorm_manday_calc_se = "name LIKE '%".$name."%' AND jobNumber LIKE '%".$jobNumber."%' ORDER BY room_livedate DESC LIMIT 1";
                //     $sql_dorm_manday_calc_se = "SELECT * FROM dorm_manday_calc WHERE " .$sj_dorm_manday_calc_se;
                //     $query_dorm_manday_calc_se1 = $this->db->query($sql_dorm_manday_calc_se ,$sj_dorm_manday_calc_se);
                //     // $start_Coordinating_date = new DateTime($query_dorm_manday_calc_se1->row()->CoordinatingDate);
                //     // $end_Coordinating_date = new DateTime($retreatDate);
                //     $start_Coordinating_date = strtotime($query_dorm_manday_calc_se1->row()->CoordinatingDate);
                //     $end_Coordinating_date = strtotime($retreatDate);

                // //若只有一条数据则取房间入住日期进行判断，若退宿日期-房间入住日期<0报错
                // }
                // elseif($query_dorm_manday_calc_se->num_rows()==1)
                // {
                //     //若只有一条数据则取房间入住日期进行判断，若退宿日期-房间入住日期<0报错
                //     $sj_dorm_manday_calc_se = "name LIKE '%".$name."%' AND jobNumber LIKE '%".$jobNumber."%'";
                //     $sql_dorm_manday_calc_se = "SELECT * FROM dorm_manday_calc WHERE " .$sj_dorm_manday_calc_se;
                //     $query_dorm_manday_calc_se1 = $this->db->query($sql_dorm_manday_calc_se ,$sj_dorm_manday_calc_se);
                //     // $start_Coordinating_date = new DateTime($query_dorm_manday_calc_se1->row()->room_livedate);
                //     // $end_Coordinating_date = new DateTime($retreatDate);
                //     $start_Coordinating_date = strtotime($query_dorm_manday_calc_se1->row()->room_livedate);
                //     $end_Coordinating_date = strtotime($retreatDate);

                // //若一条数据都没有，则取人员信息的入住日期进行判断，若退宿日期-入住日期<0报错  
                // }
                // else
                // {
                //     $sj_dorm_manday_calc_se = "name LIKE '%".$name."%' AND jobNumber LIKE '%".$jobNumber."%'";
                //     $sql_dorm_manday_calc_se = "SELECT * FROM dorm_livepeople WHERE " .$sj_dorm_manday_calc_se;
                //     $query_dorm_manday_calc_se1 = $this->db->query($sql_dorm_manday_calc_se ,$sj_dorm_manday_calc_se);
                //     // $start_Coordinating_date = new DateTime($query_dorm_manday_calc_se1->row()->liveDate);
                //     // $end_Coordinating_date = new DateTime($retreatDate);
                //     $start_Coordinating_date = strtotime($query_dorm_manday_calc_se1->row()->liveDate);
                //     $end_Coordinating_date = strtotime($retreatDate);
                // }

                // //日期差值计算 
                // // $days = $start_Coordinating_date->diff($end_Coordinating_date)->days;
                // $days = ($end_Coordinating_date - $start_Coordinating_date) / 86400;


                // //调宿日期有误进行报错
                // if($days<=0)
                // {
                //     $return = array('res' => '40001', 'msg' => '请检查退宿日期', 'data' => '');
                //     $result = json_encode($return);
                // } 
                // else 
                // {                 
                    //在退宿记录表中查找是否有这这个人员的退宿记录，如果有则报错
                    // $sql = "SELECT * FROM dorm_stay_retreat_tune WHERE jobNumber LIKE '%".$jobNumber."%' AND retreatType IS NOT NULL";
                    // $query = $this->db->query($sql);

                    // $query = $this->db->query("SELECT * FROM dorm_stay_retreat_tune WHERE jobNumber LIKE '%".$jobNumber."%' AND retreatType IS NOT NULL");
                    $query = $this->db->query("SELECT * FROM dorm_stay_retreat_tune WHERE jobNumber = '".$jobNumber."' AND idNumber = '".$idNumber."' AND type = 0");

                    $queryLive = $this->db->query("SELECT * FROM dorm_stay_retreat_tune WHERE jobNumber = '".$jobNumber."' AND idNumber = '".$idNumber."' AND type = 1");

                        if( ( $query->num_rows() != 0 && $queryLive->num_rows() != 0 ) && ($queryLive->num_rows() - $query->num_rows() == 0 ) )
                        {
                            $return = array('res' => '40001', 'msg' => '不允许重复退宿', 'data' => '');
                            $result = json_encode($return);
                        } 
                        else 
                        {
                        /*记录表数据插入*/

                            //取入住人员信息表中的此人的数据
                            // $query = $this->db->get_where('dorm_livepeople', array('name' => $name, 'jobNumber' => $jobNumber));
                            if($jobNumber != '' AND $idNumber == '')
                            {
                                $query = $this->db->query("SELECT * FROM dorm_livepeople WHERE jobNumber = '".$jobNumber."'");
                            }
                            elseif($jobNumber == '' AND $idNumber != '')
                            {
                                $query = $this->db->query("SELECT * FROM dorm_livepeople WHERE idNumber = '".$idNumber."'");
                            }
                            elseif($jobNumber != '' AND $idNumber != '')
                            {
                                $query = $this->db->query("SELECT * FROM dorm_livepeople WHERE idNumber = '".$idNumber."' AND jobNumber = '".$jobNumber."'");
                            }
                            
                            //对象数组转数组
                            $query_array = (array)$query->result()[0];
                                     
                            //取当前日期
                            $date_now = date('Y-m-d');

                            //0:退宿 1:入住
                            $SQ_type = 0;

                            // //取入住/退宿记录表中此人员的全部信息
                            // $query_dorm_stay_retreat_tune = $this->db->get_where('dorm_stay_retreat_tune' ,array('name' => $name, 'jobNumber' => $jobNumber, 'type' => 0 ));
                            //取入住/退宿记录表中此人员的全部信息
                            $query_dorm_stay_retreat_tune = $this->db->query("SELECT * FROM dorm_stay_retreat_tune WHERE jobNumber = '".$jobNumber."' AND idNumber = '".$idNumber."' AND type = 0");
                    
                                //给要插入到入住/退宿信息表中的数据赋值
                                $data_dorm_stay_retreat_tune = array(
                                    'area_number' => $query_array['area_number'],           //区域编号
                                    'floor_number' => $query_array['floor_number'],         //宿舍楼编号
                                    'dorm_floor' => $query_array['dorm_floor'],             //宿舍楼层号
                                    'room_number' => $query_array['room_number'],           //宿舍房间号
                                    // 'idNumber' => $query_array['idNumber'],              //身份证号
                                    'idNumber' => $idNumber,                                //身份证号             
                                    'jobNumber' => $query_array['jobNumber'],               //工号
                                    'name' => $query_array['name'],                         //人员姓名
                                    // 'department' => $query_array['department'],          //部门
                                    'department2' => $query_array['department2'],           //二级部门
                                    'department3' => $query_array['department3'],           //三级部门
                                    'job' => $query_array['job'],                           //岗位
                                    'sex' => $query_array['sex'],                           //性别
                                    'phone' => $query_array['phone'],                       //联系方式
                                    'location' => $query_array['location'],                 //籍贯
                                    'address' => $query_array['address'],                   //户籍地址
                                    'type' => 0,                                            //类别
                                    'retreatType' => $retreatType,                          //退宿类型
                                    'apply_date' => $date_now,                              //申请日期
                                    'bedNumber' => $query_array['bedNumber'],               //床位号
                                    'wardrobe' => $query_array['wardrobe'],                 //柜子号
                                    'liveDate' => $query_array['liveDate'],                 //入住日期
                                    // 'liveDate' => $retreatDate,                          //入住日期(新房间入住日期)
                                    'retreatDate' => $retreatDate,                          //退宿日期
                                    'emergencyContact' => $query_array['emergencyContact'], //紧急联系人
                                    'relationShip' => $query_array['relationShip'],         //与紧急联系人关系
                                    'emergencyPhone' => $query_array['emergencyPhone'],     //紧急联系人联系方式
                                    'remarks' => $remarks,                                  //备注
                                    'applyName' => $name                                    //申请人
                                );

                                //如果记录表中无此人离职记录则将此条数据插入
                                $this->db->insert('dorm_stay_retreat_tune', $data_dorm_stay_retreat_tune);
                                $result_dorm_stay_retreat_tune = $this->db->affected_rows();

                        /*人员信息表更新*/

                            //入住人员信息表更新数据
                            $data_dorm_livepeople = array(
                                'quitCheck' => 'X',                         //将是否已退宿标记为X
                                'retreatType' => $retreatType,              //退宿类型
                                'retreatDate' => $retreatDate,              //退宿日期
                                'remarks' => $remarks,                      //备注
                                'check_inAddress' => $check_inAddress,      //入住位置
                                'liveCheck' => ''                           //将是否已入住标记为空
                                );
                            // $where = array('name' => $name, 'jobNumber' => $jobNumber);
                            // $this->db->where($where);
                            $this->db->where('jobNumber', $jobNumber);
                            $this->db->or_where('idNumber', $idNumber);
                            $this->db->update('dorm_livepeople', $data_dorm_livepeople);
                            $result_dorm_livepeople = $this->db->affected_rows();

                        /*房间表的宿舍实际人数和宿舍剩余可住人数更新*/

                            //取入住人员信息表中此人员的所有数据
                            // $query_livepeople = $this->db->get_where('dorm_livepeople', array('jobNumber' => $jobNumber));
                            if($jobNumber != '' AND $idNumber == '')
                            {
                                $query_livepeople = $this->db->query("SELECT * FROM dorm_livepeople WHERE jobNumber = '".$jobNumber."'");
                            }
                            elseif($jobNumber == '' AND $idNumber != '')
                            {
                                $query_livepeople = $this->db->query("SELECT * FROM dorm_livepeople WHERE idNumber = '".$idNumber."'");
                            }
                            elseif($jobNumber != '' AND $idNumber != '')
                            {
                                $query_livepeople = $this->db->query("SELECT * FROM dorm_livepeople WHERE jobNumber = '".$jobNumber."' AND idNumber = '".$idNumber."'");
                            }
                                 //对象数组转数组
                                $num = (array)$query_livepeople->result()[0];
                                
                                //将区域编号,宿舍楼编号,房间号作为条件取房间信息表中的宿舍实际人数
                                 $query_roominfor = $this->db->get_where('dorm_roominfor', array('area_number' => $num['area_number'], 'floor_number' => $num['floor_number'], 'room_number' => $num['room_number']));

                                //对象数组转数组
                                $peopleNumber = (array)$query_roominfor->result()[0];

                                //将原宿舍实际人数-1
                                $peopleNumber_add = $peopleNumber['peopleNumber'] - 1;
                                
                                //将原宿舍剩余可住人数+1
                                $remainNumber_add = $peopleNumber['remainNumber']  + 1;

                                //将原宿舍可住人数和宿舍实际人数进行更新
                                $where_peopleNumber = array(
                                    'area_number' => $peopleNumber['area_number'],      //区域编号
                                    'floor_number' => $peopleNumber['floor_number'],    //宿舍楼编号
                                    'room_number' => $peopleNumber['room_number']       //宿舍房间号
                                );
                                $data_peopleNumber = array(
                                    'peopleNumber' => $peopleNumber_add,                //宿舍实际人数
                                    'remainNumber' => $remainNumber_add                 //宿舍剩余可住
                                );
                                
                                $this->db->where($where_peopleNumber);
                                $this->db->update('dorm_roominfor', $data_peopleNumber);
                                $result_dorm_roominfor = $this->db->affected_rows();

                        /*床位表更新*/

                            //更新床位表退宿人员信息
                            $data_bed = array(
                                'idNumber' => '',       //身份证号
                                'name' => '',           //姓名
                                'sex' => '',            //性别
                                'jobNumber' => '',      //工号
                                'department1' => '',    //一级部门编号
                                'department2' => '',    //二级部门编号
                                'department3' => '',    //三级部门编号
                                'job' => '',            //岗位          
                                'phone' => '',          //联系方式
                                'check_inWhether' => 0, //是否住人
                                'remarks' => ''         //备注
                            );
                            
                            $this->db->where('jobNumber', $jobNumber);
                            $this->db->or_where('idNumber', $idNumber);
                            $this->db->update('dorm_bed', $data_bed);
                            $result_bed = $this->db->affected_rows();

                            // /*水电人天表更新*/

                            //     //若存在免扣水电的情况需要减去免扣水电的天数
                            //     //取免扣水电表中的当月人员信息
                            //     $sql_leave_off = "SELECT * FROM dorm_leave_off WHERE name LIKE '%".$name."%' AND jobNumber LIKE '%".$jobNumber."%' ORDER BY apply_beginDate DESC LIMIT 1";
                            //     $query_leave_off = $this->db->query($sql_leave_off);

                            //     //若此人存在水电免扣的信息则进行下面的逻辑
                            //     if($query_leave_off->num_rows()>0)
                            //     {

                            //     //申请日期开始日期的年份
                            //     $year_beginDate = substr($query_leave_off->row()->apply_beginDate, 0, 4);

                            //     //申请日期开始日期的月份
                            //     $month_beginDate = substr($query_leave_off->row()->apply_beginDate, 5, 2);

                            //     //申请日期结束日期的年份
                            //     $year_endDate = substr($query_leave_off->row()->apply_endDate, 0, 4);

                            //     //申请日期结束日期的月份
                            //     $month_endDate = substr($query_leave_off->row()->apply_endDate, 5, 2);

                            //     }

                            // /*计算所住房间的居住天数
                            // 1.若有多条取最近的一条房间入住日期的数据的房间入住日期与输入的退宿日期比较，若同年同月则入住天数 = 退宿日期 - 房间入住日期 ，若不同则入住天数 = 退宿日期 - 当年当月的第一天,若存在水电免扣则减去水电免扣的申请天数
                            // 2.若只有一条数据取这条数据的房间入住日期与所输的退宿日期比较，若同年同月则入住天数 = 退宿日期 - 房间入住日期 ，若不同则退宿日期 - 当年当月的第一天,若存在水电免扣则减去水电免扣的申请天数
                            // 3.若水电表一条数据都没有将人员的入住日期与所输的退宿日期比较，若同年同月则入住天数 = 退宿日期 - 入住日期 ，若不同则入住天数 = 退宿日期 - 当年当月的第一天，若存在水电免扣则减去水电免扣的申请天数
                            //     (1)先计算入住天数 
                            //     (2)减去免扣水电天数 
                            //     (3)插入数据到水电表更新入住天数 
                            //     (4)再插一条数据到水电表中更新调宿日期*/

                            // /*水电免扣逻辑
                            // 1.如果申请日期开始日期年份月份等于当年当月,并且申请日期结束日期年份月份也等于当年当月 则入住天数 = 原入住天数 - 申请天数
                            // 2.如果申请日期开始日期年份月份等于当年当月,申请日期结束日期年份月份也等于当年不等于当月 则入住天数 = 原入住天数 - (当月最后一天-申请日期开始日期)
                            // */

                            //     //取人天水电表条数
                            //     $query_manday = $this->db->get_where('dorm_manday_calc' ,array('name' => $name ,'jobNumber' => $jobNumber));

                            //     //若有多条取最近的一条房间入住日期的数据的房间入住日期与输入的调宿日期比较，若同年同月则入住天数 = 调宿日期 - 房间入住日期 ，若不同则入住天数 = 调宿日期 - 当年当月的第一天,若存在水电免扣则减去水电免扣的申请天数
                            //     if($query_manday->num_rows()>1)
                            //     {

                            //         //取最近的一条房间入住日期的数据的年份
                            //         $year = substr($query_dorm_manday_calc_se1->row()->room_livedate, 0, 4);

                            //         //取最近的一条房间入住日期的数据的月份
                            //         $month = substr($query_dorm_manday_calc_se1->row()->room_livedate, 5, 2);

                            //         ////若同年同月则入住天数 = 退宿日期 - 房间入住日期 
                            //         if($year == date("Y") && $month == date("m"))
                            //         {
                            //             // $start_Coordinating_date1 = new DateTime($query_dorm_manday_calc_se1->row()->room_livedate);
                            //             // $end_room_livedate = new DateTime($retreatDate);
                            //             // $live_days = $start_Coordinating_date1->diff($end_room_livedate)->days;
                            //             $start_Coordinating_date1 = strtotime($query_dorm_manday_calc_se1->row()->room_livedate);
                            //             $end_room_livedate = strtotime($retreatDate);
                            //             $live_days = ($end_room_livedate - $start_Coordinating_date1) / 86400;

                            //         //若不同则入住天数 = 退宿日期 - 退宿年退宿日期月的第一天
                            //         }
                            //         else
                            //         {
                            //             $retreatDate_year = substr($retreatDate, 0, 4);
                            //             $retreatDate_month = substr($retreatDate, 5, 2);
                            //             // $start_Coordinating_date1 = new DateTime(date("$retreatDate_year-$retreatDate_month-01"));
                            //             // $end_room_livedate = new DateTime($retreatDate);
                            //             // $live_days = $start_Coordinating_date1->diff($end_room_livedate)->days;
                            //             $start_Coordinating_date1 = strtotime(date("$retreatDate_year-$retreatDate_month-01"));
                            //             $end_room_livedate = strtotime($retreatDate);
                            //             $live_days = ($end_room_livedate - $start_Coordinating_date1) / 86400;
                            //         }

                            //         //减去免扣水电天数
                            //         if($query_leave_off->num_rows()>0)
                            //         {

                            //             //如果申请日期开始日期年份月份等于当年当月,并且申请日期结束日期年份月份也等于当年当月 则入住天数 = 原入住天数 - 申请天数
                            //             if( ( $year_beginDate == date("Y") && $month_beginDate = date("m") ) && ( $year_endDate == date("Y") && $month_endDate == date("m") ) )
                            //             {
                            //                 $live_days = $live_days - $query_leave_off->row()->apply_days;

                            //             //如果申请日期开始日期年份月份不等于当年当月,申请日期结束日期年份月份也等于当年不等于当月 则入住天数 = 原入住天数 - (当月最后一天-申请日期开始日期)
                            //             // }elseif( ( $year_beginDate == date("Y") && $month_beginDate = date("m") ) && ( $year_endDate == date("Y") && $month_endDate != date("m") ) )
                            //             }
                            //             else
                            //             {
                            //                 // $start_apply_beginDate = new DateTime($query_leave_off->row()->apply_beginDate);
                            //                 // $end_month_last = date("Y-m-t");//当月最后一天
                            //                 // $live_days = $live_days - $start_apply_beginDate->diff($end_month_last)->days;
                            //                 $start_apply_beginDate = strtotime($query_leave_off->row()->apply_beginDate);
                            //                 $end_month_last = strtotime(date("Y-m-t"));//当月最后一天
                            //                 $live_days -= (($end_month_last - $start_apply_beginDate) / 86400 );
                            //             }
                            //         }

                            //         //将入住天数与退宿日期进行更新
                            //         $sql_live_days_up = "UPDATE dorm_manday_calc SET liveDays = '".$live_days."' , Check_outDate = '".$retreatDate."' WHERE name LIKE '%".$name."%' AND jobNumber LIKE '%".$jobNumber."%' AND CoordinatingDate IS NULL";
                            //         $query_live_days  = $this->db->query($sql_live_days_up);
                            //         $result_manday_calc_up = $this->db->affected_rows();
                                
                            //     //若只有一条数据取这条数据的房间入住日期与所输的退宿日期与较，若同年同月则入住天数 = 退宿日期 - 房间入住日期 ，若不同则退宿日期 - 当年当月的第一天,若存在水电免扣则减去水电免扣的申请天数
                            //     }
                            //     elseif($query_manday->num_rows()==1)
                            //     {

                            //         //取最近的一条房间入住日期的数据的年份
                            //         $year = substr($query_dorm_manday_calc_se1->row()->room_livedate, 0, 4);

                            //         //取最近的一条房间入住日期的数据的年份
                            //         $month = substr($query_dorm_manday_calc_se1->row()->room_livedate, 5, 2);

                            //         //若同年同月则入住天数 = 调宿日期 - 房间入住日期
                            //         if($year == date("Y") && $month == date("m"))
                            //         {
                            //             // $start_Coordinating_date1 = new DateTime($query_dorm_manday_calc_se1->row()->room_livedate);
                            //             // $end_room_livedate = new DateTime($retreatDate);
                            //             // $live_days = $start_Coordinating_date1->diff($end_room_livedate)->days;
                            //             $start_Coordinating_date1 = strtotime($query_dorm_manday_calc_se1->row()->room_livedate);
                            //             $end_room_livedate = strtotime($retreatDate);
                            //             $live_days = ($end_room_livedate - $start_Coordinating_date1) / 86400;

                            //             //若不同则入住天数 = 调宿日期 - 退宿年退宿日期月的第一天
                            //             }
                            //             else
                            //             {
                            //                 $retreatDate_year = substr($retreatDate, 0, 4);
                            //                 $retreatDate_month = substr($retreatDate, 5, 2);
                            //                 // $start_Coordinating_date1 = new DateTime(date("$retreatDate_year-$retreatDate_month-01"));
                            //                 // $end_room_livedate = new DateTime($retreatDate);
                            //                 // $live_days = $start_Coordinating_date1->diff($end_room_livedate)->days;
                            //                 $start_Coordinating_date1 = strtotime(date("$retreatDate_year-$retreatDate_month-01"));
                            //                 $end_room_livedate = strtotime($retreatDate);
                            //                 $live_days = ($end_room_livedate - $start_Coordinating_date1) / 86400;
                            //             }

                            //         //减去免扣水电天数
                            //         if($query_leave_off->num_rows()>0)
                            //         {

                            //             //如果申请日期开始日期年份月份等于当年当月,并且申请日期结束日期年份月份也等于当年当月 则入住天数 = 原入住天数 - 申请天数
                            //             if( ( $year_beginDate == date("Y") && $month_beginDate = date("m") ) && ( $year_endDate == date("Y") && $month_endDate == date("m") ) )
                            //             {
                            //                 $live_days = $live_days - $query_leave_off->row()->apply_days;

                            //             //如果申请日期开始日期年份月份不等于当年当月,申请日期结束日期年份月份也等于当年不等于当月 则入住天数 = 原入住天数 - (当月最后一天-申请日期开始日期)
                            //             // }elseif( ( $year_beginDate == date("Y") && $month_beginDate = date("m") ) && ( $year_endDate == date("Y") && $month_endDate != date("m") ) ){
                            //             }
                            //             else
                            //             {
                            //                 // $start_apply_beginDate = new DateTime($query_leave_off->row()->apply_beginDate);
                            //                 // $end_month_last = date("Y-m-t");//当月最后一天
                            //                 // $live_days = $live_days - $start_apply_beginDate->diff($end_month_last)->days;
                            //                 $start_apply_beginDate = strtotime($query_leave_off->row()->apply_beginDate);
                            //                 $end_month_last = strtotime(date("Y-m-t"));//当月最后一天
                            //                 $live_days -= (($end_month_last - $start_apply_beginDate) / 86400);
                            //             }
                            //         }

                            //         //更新水电人天表
                            //         $data_manday = array(
                            //             'Check_outDate' => $retreatDate,    //退宿日期
                            //             'liveDays' => $live_days            //入住日期
                            //         );
                            //         $where_manday = array(
                            //             'name' => $name,                    //人员姓名
                            //             'jobNumber' => $jobNumber           //工号
                            //         );
                            //         $this->db->where($where_manday);
                            //         $this->db->update('dorm_manday_calc' ,$data_manday);
                            //         $result_manday_calc_up = $this->db->affected_rows();

                            //     //若水电表一条数据都没有将人员的入住日期与退宿日期比较，若同年同月则入住天数 = 退宿日期 - 入住日期 ，若不同则入住天数 = 退宿日期 - 当年当月的第一天，若存在水电免扣则减去水电免扣的申请天数
                            //     }
                            //     else
                            //     {

                            //         //取退宿人员的所有信息
                            //         $query_liveDate = $this->db->get_where('dorm_livepeople' ,array('name' => $name, 'jobNumber' => $jobNumber));

                            //         //取入住日期的年份
                            //         $year = substr($query_liveDate->row()->liveDate, 0, 4);

                            //         ///取入住日期的月份
                            //         $month = substr($query_liveDate->row()->liveDate, 5, 2);

                            //         //若同年同月则入住天数 = 退宿日期 - 入住日期
                            //         if($year == date("Y") && $month == date("m"))
                            //         {
                            //             // $start_Coordinating_date1 = new DateTime($query_liveDate->row()->liveDate);
                            //             // $end_room_livedate = new DateTime($retreatDate);
                            //             // $live_days = $start_Coordinating_date1->diff($end_room_livedate)->days;
                            //             $start_Coordinating_date1 = strtotime($query_liveDate->row()->liveDate);
                            //             $end_room_livedate = strtotime($retreatDate);
                            //             $live_days = ($end_room_livedate - $start_Coordinating_date1) / 86400;

                            //             //若不同则入住天数 = 退宿日期 - 当年退宿日期月的第一天
                            //             }
                            //             else
                            //             {
                            //                 $retreatDate_year = substr($retreatDate, 0, 4);
                            //                 $retreatDate_month = substr($retreatDate, 5, 2);
                            //                 // $start_Coordinating_date1 = new DateTime(date("$retreatDate_year-$retreatDate_month-01"));
                            //                 // $end_room_livedate = new DateTime($retreatDate);
                            //                 // $live_days = $start_Coordinating_date1->diff($end_room_livedate)->days;
                            //                 $start_Coordinating_date1 = strtotime(date("$retreatDate_year-$retreatDate_month-01"));
                            //                 $end_room_livedate = strtotime($retreatDate);
                            //                 $live_days = ($end_room_livedate - $start_Coordinating_date1) / 86400;
                            //             }

                            //         //减去免扣水电天数
                            //         if($query_leave_off->num_rows()>0)
                            //         {

                            //             //如果申请日期开始日期年份月份等于当年当月,并且申请日期结束日期年份月份也等于当年当月 则入住天数 = 原入住天数 - 申请天数
                            //             if( ( $year_beginDate == date("Y") && $month_beginDate = date("m") ) && ( $year_endDate == date("Y") && $month_endDate == date("m") ) )
                            //             {
                            //                 $live_days = $live_days - $query_leave_off->row()->apply_days;

                            //             //如果申请日期开始日期年份月份等于当年当月,申请日期结束日期年份月份也等于当年不等于当月 则入住天数 = 原入住天数 - (当月最后一天-申请日期开始日期)
                            //             // }elseif( ( $year_beginDate == date("Y") && $month_beginDate = date("m") ) && ( $year_endDate == date("Y") && $month_endDate != date("m") ) ){
                            //             }
                            //             else
                            //             {
                            //                 // $start_apply_beginDate = new DateTime($query_leave_off->row()->apply_beginDate);
                            //                 // $end_month_last = date("Y-m-t");//当月最后一天
                            //                 // $live_days = $live_days - $start_apply_beginDate->diff($end_month_last)->days;
                            //                 $start_apply_beginDate = strtotime($query_leave_off->row()->apply_beginDate);
                            //                 $end_month_last = strtotime(date("Y-m-t"));//当月最后一天
                            //                 $live_days = ($end_month_last - $start_apply_beginDate) / 86400;
                            //             }
                            //         }
                                
                            //         //数据插入水电表
                            //         $data_manday_calc = array(
                            //             'area_number' => $query_array['area_number'],
                            //             'floor_number' => $query_array['floor_number'],
                            //             'room_number' => $query_array['room_number'],
                            //             'name' => $name,
                            //             'jobNumber' => $jobNumber,
                            //             'dorm_livedate' => $query_array['liveDate'],
                            //             'room_livedate' => $query_array['liveDate'],
                            //             'Check_outDate' => $retreatDate,
                            //             'CoordinatingDate' => '',
                            //             'liveDays' => $live_days
                            //         );
                            //         $this->db->insert('dorm_manday_calc' ,$data_manday_calc);
                            //         $result_manday_calc_up = $this->db->affected_rows();
                            //     }

                            // /*退宿人员水电费计算*/

                            //     $roomMeterArray = array(
                            //         $jobNumber,                                             //工号
                            //         $date = strtotime(date("Y-m-d")),                       //当前时间时间戳
                            //         $area_number = explode('*', $check_inAddress)[0],       //区域编号
                            //         $floor_number = explode('*', $check_inAddress)[1],      //宿舍楼编号
                            //         $room_number = explode('*', $check_inAddress)[2],       //宿舍房间号
                            //         $room_hotwater,                                         //房间热水表
                            //         $room_coldwater,                                        //房间冷水表
                            //         $room_electric                                          //房间电表
                            //     );

                            //     //调用方法计算水电费
                            //     $query_retreatCost = $this->cost->singleUtilitiesCalc($roomMeterArray);
                            //     $result_retreatCost = $this->db->affected_rows();

                                // print_r($result_dorm_stay_retreat_tune);
                                // print_r($result_dorm_livepeople);
                                // print_r($result_dorm_roominfor);
                                // print_r($result_bed);
                                // print_r($result_manday_calc_up);
                                // print_r($result_retreatCost);
                                // return;


                            //计算人员入住天数
                            //取人员的入住日期，若入住日期与退宿日期为同月则用退宿日期-入住日期若不同月则退宿日期-本月一号
                            $data_people = $this->db->get_where('dorm_livepeople', array('idNumber' => $idNumber, 'jobNumber' => $jobNumber));
                            $query_people = $data_people->result();
                        
                            //若调宿日期为空则计算日期为入住日期，若不为空则计算日期为调宿日期
                            if($query_people->tune_inDate == '')
                            {
                                $calcDate = $query_people->liveDate;
                            }
                            else
                            {
                                $calcDate = $query_people->tune_inDate;
                            }

                            //若计算日期的月份和当前月份一致，则计算计算日期与调宿日期之间的天数，若不一致则计算调宿日期与本月第一天之间的天数
                            if(substr($calcDate, 5, 2) == date("m"))
                            {
                                $datetime_start = new DateTime($calcDate);
                                $datetime_end = new DateTime($retreatDate);
                                $days = $datetime_start->diff($datetime_end)->days;
                            }
                            else
                            {
                                $datetime_start = new DateTime(date("Y-m-01"));
                                $datetime_end = new DateTime($retreatDate);
                                $days = $datetime_start->diff($datetime_end)->days;
                            }
                        
                            //判断此人员是否在dorm_days表中是否存在，若存在则证明此人进行过调宿
                            $data_days = $this->db->get_where('dorm_days', array('idNumber' => $idNumber, 'jobNumber' => $jobNumber ,'days' => '0', 'flag' => '1'));
                            $query_days = $data_days->result();

                            if($query_days)
                            {
                                //原宿舍数据
                                $arrDays = array(
                                    'area_number' => explode(',', $check_inAddress)[0],
                                    'floor_number' => explode(',', $check_inAddress)[1],
                                    'dorm_floor' => explode(',', $check_inAddress)[2],
                                    'room_number' => explode(',', $check_inAddress)[3],
                                    'idNumber' => $idNumber,
                                    'jobNumber' => $jobNumber,
                                    'name' => $name,
                                    'sex' => $sex,
                                    'year' => date("Y"),
                                    'month' => date("m"),
                                    'days' => $days,
                                    'flag' => '0'
                                );
                                //更新旧房间信息
                                $this->db->update('dorm_days', $arrDays);
                                $result_days = $this->db->affected_rows();
                            }
                            else
                            {
                                $arrDays = array(
                                    //更新宿舍数据
                                    'area_number' => explode(',', $check_inAddress)[0],
                                    'floor_number' => explode(',', $check_inAddress)[1],
                                    'dorm_floor' => explode(',', $check_inAddress)[2],
                                    'room_number' => explode(',', $check_inAddress)[3],
                                    'idNumber' => $idNumber,
                                    'jobNumber' => $jobNumber,
                                    'name' => $name,
                                    'sex' => $sex,
                                    'year' => date("Y"),
                                    'month' => date("m"),
                                    'days' => $days,
                                    'flag' => '0'
                                );

                                //数据插入表
                                $this->db->insert_batch('dorm_days', $arrDays);
                                $result_days = $this->db->affected_rows();
                            }

                            //将退宿人员信息更新到人员人天信息表
                            if ($result_dorm_stay_retreat_tune && $result_dorm_livepeople && $result_dorm_roominfor && $result_bed && $result_days)
                            {
                                $return_su = array('res' => '40000', 'msg' => '退宿成功', 'data' => '');
                                $result = json_encode($return_su);
                            }
                            else
                            {
                                $return_fa = array('res' => '40001', 'msg' => '退宿失败', 'data' => '');
                                $result = json_encode($return_fa);
                            }
                        }      
                    }

            return $result;
        }

        /*费用计算
        1.本月实际水电费表计算(上月水电费表数-截止目前水电表数)
        2.宿舍个人水电计算 ：(天数x人数)/人数
        */

        //当前月房间退宿人员费用
        // public function retreat_cost($jobNumber, $name, $hotwater, $coldwater, $electric){

        //     if($jobNumber == '' || $name == ''){

        //         $return = array('res' => '40002', 'msg' => '请输入必填字段', 'data' => '');
        //         $result = json_encode($return);

        //     }else{

        //         //取此人员未退宿前入住的宿舍房间
        //         $query_livepeople = $this->db->get_where('dorm_livepeople', array('jobNumber' => $jobNumber, 'name' => $name));

        //         if($query_livepeople->num_rows()>0){
        //             //本月截止目前实际水电费 = 上月水电费表数 - 截止目前水电费表数

        //             //区域编号
        //             $area_number = $query_livepeople['area_number'];

        //             //宿舍楼编号
        //             $floor_number = $query_livepeople['floor_number'];

        //             //宿舍房间号
        //             $room_number = $query_livepeople['room_number'];

        //             //取此房间的上月的水电费
        //             $sql_hydropower  = "SELECT * FROM dorm_room_hydropower WHERE area_number = '".$area_number."' AND floor_number = '".$floor_number."' AND room_number = '".$room_number."' ORDER BY date DESC LIMIT 1" ; 
        //             $query_hydropower = $this->db->query($sql_hydropower);

        //             if($query_hydropower->num_rows()>0){

        //                 if(substr($query_hydropower['date'], 0, 4) == date("Y") && substr($query_hydropower['date'], 5, 2) == date("m")-1){

        //                     //本月实际热水表 = 上月水电费表数 - 截止目前热水表
        //                     $room_hotwater = $query_hydropower['room_hotwater'] - $hotwater;

        //                     //本月实际冷水表 = 上月冷水表 - 截止目前冷水表
        //                     $room_coldwater = $query_hydropower['room_coldwater'] - $coldwater;

        //                     //本月实际电表 = 上月电表 - 截止目前电表
        //                     $room_electric = $query_hydropower['electric'] - $electric;

        //                     //取房间居住人数
        //                     $query_people = $this->db->get_where('dorm_roominfor', array('area_number' => $area_number, 'floor_number' => $floor_number, 'room_number' => $room_number));

        //                     if($query_people->num_rows()>0){

        //                         //取宿舍实际人数
        //                         $people = $query_people['peopleNumber'];

        //                         //个人热水费




        //                     }else{
        //                         $return = array('res' => '40001', 'msg' => '无此房间数据' ,'data' => '');
        //                         $result = json_encode($return);   
        //                     }

        //                 }else{
        //                     $return = array('res' => '40001', 'msg' => '无此房间上月水电记录' ,'data' => '');
        //                     $result = json_encode($return);
        //                 }
        //             }else{
        //                 $return = array('res' => '40001', 'msg' => '此房间无水电记录' ,'data' => '');
        //                 $result = json_encode($return);
        //             }
        //         }else{
        //             $return = array('res' => '40001', 'msg' => '无此人员记录' ,'data' => '');
        //             $result = json_encode($return);
        //         }
        //     }

        // }

        /**
         * @description:查询上月水电表数据 
         * @param {date, area_number, floor_number, dorm_floor, room_number}
         * @return {*}
         */
        public function lastMonth($date, $area_number, $floor_number, $dorm_floor, $room_number)
        {
            //核算月上月第一天
            $monthBegin = date("Y-m-01", (strtotime("-1 month", strtotime($date))));;

            //核算月上月最后一天
            $monthEnd = date("Y-m-t", (strtotime("-1 month", strtotime($date))));

            $queryRoom = $this->db->query("SELECT * FROM dorm_room_hydropower WHERE area_number = '".$area_number."' AND floor_number = '".$floor_number."' AND dorm_floor = '".$dorm_floor."' AND room_number = '".$room_number."' AND date BETWEEN '".$monthBegin."' AND '".$monthEnd."'");

            $queryPublic = $this->db->query("SELECT * FROM dorm_public_hydropower WHERE area_number = '".$area_number."' AND floor_number = '".$floor_number."' AND dorm_floor = '".$dorm_floor."' AND public_date BETWEEN '".$monthBegin."' AND '".$monthEnd."'");

            if($queryRoom->num_rows()>0 && $queryPublic->num_rows()>0)
            {
                $return = array('res' => '40000', 'msg' => '查询成功' ,'data' => '');
                $result = json_encode($return);
            }
            elseif($queryRoom->num_rows()>0 && $queryPublic->num_rows() == 0)
            {
                $return = array('res' => '40001', 'msg' => '无上月公共费用数据，无法结算' ,'data' => '');
                $result = json_encode($return);
            }
            elseif($queryRoom->num_rows() == 0 && $queryPublic->num_rows() >0)
            {
                $return = array('res' => '40001', 'msg' => '无上月房间费用数据，无法结算' ,'data' => '');
                $result = json_encode($return);
            }
            elseif($queryRoom->num_rows() == 0 && $queryPublic->num_rows() ==0)
            {
                $return = array('res' => '40001', 'msg' => '无上月房间费用和公共费用数据，无法结算' ,'data' => '');
                $result = json_encode($return);
            }
            return $result;
        }
}
?>